Presto CLI (Command Line Interface) একটি শক্তিশালী টুল যা ব্যবহারকারীদের Presto সার্ভারে SQL কোয়েরি চালানোর জন্য কমান্ড লাইন থেকে সরাসরি সংযোগ স্থাপন করতে সহায়ক। Presto CLI ব্যবহার করা খুবই সহজ, এবং এটি ব্যবহারে ব্যবহারকারী তাদের কোয়েরি কার্যকরভাবে এবং দ্রুত চালাতে পারে।
Presto CLI ইনস্টল করা খুব সহজ। Presto সার্ভার ইনস্টলেশনের পরে CLI টুলটি Presto সার্ভারের ডিস্ট্রিবিউশন প্যাকেজে অন্তর্ভুক্ত থাকে।
ধাপ ১: Presto CLI ডাউনলোড এবং ইনস্টল করা Presto CLI ইনস্টল করার জন্য আপনাকে শুধুমাত্র presto-cli
ফাইলটি ডাউনলোড করতে হবে এবং সেটি আপনার সিস্টেমে রানযোগ্য করতে হবে।
# ডাউনলোড করার জন্য
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/350/presto-cli-350-executable.jar
# ফাইলকে রানযোগ্য (executable) ফাইলে রূপান্তর করুন
chmod +x presto-cli-350-executable.jar
এখন আপনি presto-cli
ফাইলটি রান করতে পারবেন।
CLI চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog <catalog-name> --schema <schema-name>
hive
, mysql
, postgres
ইত্যাদি)।default
বা আপনার নির্দিষ্ট স্কিমা নাম)।CLI চালানোর পর আপনাকে Presto-এর SQL প্রম্পট (পিপিটি) দেখতে পাবেন, যেখানে আপনি SQL কোয়েরি চালাতে পারবেন।
Presto CLI ব্যবহার করে আপনি সহজ SQL কোয়েরি চালাতে পারেন। নিচে কিছু সাধারণ SQL কোয়েরি দেওয়া হলো:
ডেটা পড়তে SELECT কোয়েরি ব্যবহার করুন:
SELECT * FROM <table-name> LIMIT 10;
এটি একটি নির্দিষ্ট টেবিল থেকে প্রথম ১০টি রেকর্ড নিয়ে আসবে।
Presto তে দুইটি টেবিলকে JOIN করা খুবই সহজ:
SELECT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.id = b.id;
এই কোয়েরিটি দুটি টেবিলের id
কলামের উপর JOIN করবে।
বিশেষ শর্তে ডেটা ফিল্টার করতে WHERE
ক্লজ ব্যবহার করুন:
SELECT * FROM <table-name>
WHERE column_name = 'value';
এই কোয়েরিটি শুধুমাত্র নির্দিষ্ট column_name
এর মান 'value' যেগুলি রয়েছে, সেগুলি প্রদর্শন করবে।
ডেটার উপর সঞ্চালন করার জন্য COUNT
, SUM
, AVG
প্রভৃতি aggregate functions ব্যবহার করা যেতে পারে:
SELECT COUNT(*) FROM <table-name>;
এটি টেবিলের মোট রেকর্ডের সংখ্যা প্রদান করবে।
ডেটা গ্রুপ করার জন্য GROUP BY
ক্লজ ব্যবহার করুন:
SELECT column_name, COUNT(*)
FROM <table-name>
GROUP BY column_name;
এটি নির্দিষ্ট কলামের মান অনুযায়ী গ্রুপ করবে এবং প্রতিটি গ্রুপের সংখ্যা গণনা করবে।
Presto CLI তে Subqueries বা Nested Queries ব্যবহার করা সম্ভব। এটি জটিল কুয়েরি সমাধানে সহায়ক। উদাহরণস্বরূপ:
SELECT column1
FROM table_a
WHERE column2 IN (SELECT column2 FROM table_b);
এটি প্রথম টেবিলের মধ্যে থাকা কলামের মানগুলির সাথে দ্বিতীয় টেবিলের মানগুলিকে মেলাবে।
Presto CLI ব্যবহার করে আপনি কোয়েরি চালানোর পাশাপাশি আরও কিছু কাজ করতে পারেন, যেমন:
JSON
, CSV
, TSV
, ইত্যাদি। উদাহরণ:java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog <catalog-name> --schema <schema-name> --output-format json
Presto CLI তে আরও উন্নত কুয়েরি অপশন রয়েছে, যেমন:
EXPLAIN
ব্যবহার করতে পারেন:EXPLAIN SELECT * FROM <table-name>;
এটি কোয়েরির এক্সিকিউশন প্ল্যান প্রদান করবে, যা কোয়েরি অপটিমাইজেশনে সহায়ক হতে পারে।
Presto CLI ব্যবহার করে সহজ এবং দ্রুত SQL কোয়েরি চালানো সম্ভব। এটি Presto সার্ভারে সংযোগ করে ডেটা বিশ্লেষণ, ফিল্টারিং, যোগ, এবং আরও অনেক কিছু করতে সহায়ক। এর বিভিন্ন ফিচার এবং অপশন ব্যবহার করে কোয়েরি অপটিমাইজেশন এবং আরও উন্নত কার্যক্রম করা যেতে পারে।
Presto CLI (Command Line Interface) ব্যবহারকারীদের Presto সার্ভারে কোয়েরি পাঠানোর একটি সরল এবং দ্রুত উপায় প্রদান করে। CLI আপনাকে SQL কোয়েরি চালাতে এবং ফলাফল দেখতে সাহায্য করে। এটি বিশেষত ডেভেলপার এবং ডেটা সায়েন্টিস্টদের জন্য উপকারী যারা সরাসরি টার্মিনাল বা স্ক্রিপ্টিং মাধ্যমে কোয়েরি চালাতে চান।
ধাপ ১: Presto CLI ডাউনলোড করা
Presto CLI ইনস্টল করার জন্য আপনাকে প্রথমে presto-cli
নামক একটি টুল ডাউনলোড করতে হবে। এটি Presto ডিস্ট্রিবিউশন থেকে আলাদা একটি কম্পোনেন্ট যা সরাসরি সার্ভার থেকে কোয়েরি পাঠানোর জন্য ব্যবহৃত হয়।
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/350/presto-cli-350-executable.jar
chmod +x presto-cli-350-executable.jar
mv presto-cli-350-executable.jar /usr/local/bin/presto
এই কমান্ডগুলি ব্যবহার করে Presto CLI ডাউনলোড এবং ইনস্টল করা হবে।
ধাপ ২: Presto CLI চালানো
CLI ইনস্টল হওয়ার পর, আপনি নিচের কমান্ডের মাধ্যমে Presto CLI চালাতে পারেন:
presto --server <coordinator-ip>:8080 --catalog <catalog-name> --schema <schema-name>
এখানে:
<coordinator-ip>
: Presto Coordinator নোডের IP ঠিকানা।<catalog-name>
: সংযুক্ত ডেটাবেস ক্যাটালগের নাম (যেমন hive
, mysql
, postgres
ইত্যাদি)।<schema-name>
: ডেটাবেস স্কিমা (যেমন default
বা অন্য স্কিমা নাম)।Presto CLI চালানোর পর আপনি সরাসরি SQL কোয়েরি টাইপ করতে পারেন। নিচে কিছু সাধারণ SQL কোয়েরির উদাহরণ দেওয়া হলো:
ধাপ ১: একটি বেসিক SQL কোয়েরি চালানো
আপনি সহজ একটি SQL কোয়েরি চালাতে পারেন, যেমন:
SELECT * FROM <table-name> LIMIT 10;
এখানে, <table-name>
হল আপনার ডেটাবেসের টেবিলের নাম, এবং LIMIT 10
প্রথম ১০টি রেকর্ড ফেরত দেবে।
ধাপ ২: Join ব্যবহার করে কোয়েরি
আপনি একাধিক টেবিলের মধ্যে জয়েন করতে পারেন। উদাহরণস্বরূপ:
SELECT a.column_name, b.column_name
FROM table_a a
JOIN table_b b ON a.id = b.id
WHERE a.status = 'active';
এখানে table_a
এবং table_b
দুটি টেবিলের মধ্যে id
কলামে যোগসূত্র ঘটানো হয়েছে।
ধাপ ৩: Aggregation ফাংশন ব্যবহার
Presto CLI-এ আপনি গ্রুপিং এবং অ্যাগ্রিগেট ফাংশন ব্যবহার করতে পারেন, যেমন:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
এটি employees
টেবিল থেকে প্রতিটি department
অনুযায়ী কর্মচারীর সংখ্যা গণনা করবে।
১. Query History:
Presto CLI স্বয়ংক্রিয়ভাবে পূর্ববর্তী কোয়েরিগুলির একটি ইতিহাস রাখে। আপনি \s
কমান্ড ব্যবহার করে ইতিহাস দেখতে পারেন।
২. Query Timeout সেট করা:
Presto CLI-এ আপনি কোয়েরি টাইমআউট সেট করতে পারেন, যাতে দীর্ঘ সময় ধরে চলমান কোয়েরি বন্ধ হয়ে যায়।
SET SESSION query_max_run_time = '5m';
৩. Query Results Format:
আপনি ফলাফল ফরম্যাটটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ:
SELECT * FROM employees FORMAT CSV;
এটি ফলাফলটি CSV ফরম্যাটে প্রদর্শন করবে।
৪. Query Output Limit:
কোয়েরি ফলাফল সীমাবদ্ধ করার জন্য LIMIT
ক্লজ ব্যবহার করা হয়।
SELECT * FROM employees LIMIT 20;
এটি শুধুমাত্র প্রথম ২০টি রেকর্ড দেখাবে।
Presto CLI কিছু গুরুত্বপূর্ণ অপশন সহ আসে যা কোয়েরি ম্যানেজমেন্টে সহায়ক:
Presto CLI ব্যবহার করার সময় যদি কোনো সমস্যা দেখা দেয়, তাহলে আপনি config.properties
এবং node.properties
কনফিগারেশন ফাইলগুলির মধ্যে নির্দিষ্ট সেটিংস পরিবর্তন করে সমস্যার সমাধান করতে পারেন।
Presto CLI ব্যবহার করে আপনি সহজে এবং দ্রুত Presto সার্ভারে কোয়েরি চালাতে পারবেন। এটি ডেভেলপার এবং ডেটা সায়েন্টিস্টদের জন্য একটি কার্যকরী টুল, যেটি ডেটা বিশ্লেষণ এবং স্ক্রিপ্টিং করতে সহায়ক।
Presto একটি SQL কোয়েরি ইঞ্জিন, যা SQL ভাষার উপর ভিত্তি করে ডেটা প্রসেসিং করে। Presto-তে বেসিক SQL কোয়েরি চালানো খুবই সহজ এবং এর সাথে সংযুক্ত ডেটাবেস বা ডেটাসোর্স থেকে ডেটা তুলে আনতে SQL ব্যবহার করা হয়।
এখানে Presto-তে বেসিক SQL কোয়েরি চালানোর কিছু উদাহরণ দেওয়া হলো।
SELECT কোয়েরি ব্যবহার করে টেবিল থেকে ডেটা বের করা হয়।
SELECT * FROM employees;
এটি employees
টেবিলের সমস্ত রেকর্ড এবং কলাম নির্বাচন করবে।
Specific Columns নির্বাচন:
SELECT first_name, last_name FROM employees;
এটি employees
টেবিলের শুধুমাত্র first_name
এবং last_name
কলামগুলির ডেটা প্রদর্শন করবে।
WHERE ক্লজটি কোয়েরির জন্য শর্তাবলী যোগ করতে ব্যবহার করা হয়।
SELECT * FROM employees WHERE department = 'Sales';
এটি employees
টেবিল থেকে শুধুমাত্র Sales বিভাগের কর্মচারীদের রেকর্ড তুলে আনবে।
LIMIT ক্লজটি নির্দিষ্ট সংখ্যা পর্যন্ত রেকর্ড সিলেক্ট করতে ব্যবহার করা হয়।
SELECT * FROM employees LIMIT 5;
এটি employees
টেবিলের প্রথম 5টি রেকর্ড নির্বাচন করবে।
ORDER BY ক্লজটি রেকর্ডগুলো সোর্ট করতে ব্যবহার করা হয়। এটি ASC (অ্যাসেনডিং) বা DESC (ডিসেনডিং) ব্যবহার করে সোর্টিং করতে পারে।
SELECT * FROM employees ORDER BY first_name ASC;
এটি employees
টেবিলের ডেটাকে first_name
কলামের আদ্যক্ষর অনুযায়ী ASC (অ্যাসেনডিং) অর্ডারে সোর্ট করবে।
DESC সোর্টিং:
SELECT * FROM employees ORDER BY salary DESC;
এটি employees
টেবিলের রেকর্ডগুলো salary
কলাম অনুযায়ী DESC (ডিসেনডিং) অর্ডারে সোজা করে দেখাবে।
DISTINCT ব্যবহার করে একটি কলামের সমস্ত ইউনিক (অদ্বিতীয়) মান নির্বাচন করা যায়।
SELECT DISTINCT department FROM employees;
এটি employees
টেবিলের সমস্ত ইউনিক department
মানগুলো প্রদর্শন করবে।
Presto-তে বিভিন্ন aggregate functions যেমন COUNT()
, SUM()
, AVG()
, MIN()
, এবং MAX()
ব্যবহার করা যায় ডেটার সারাংশ তৈরি করতে।
COUNT() ব্যবহার করা:
SELECT COUNT(*) FROM employees;
এটি employees
টেবিলের মোট রেকর্ডের সংখ্যা দেখাবে।
SUM() ব্যবহার করা:
SELECT SUM(salary) FROM employees;
এটি employees
টেবিলের সকল কর্মচারীর মোট salary যোগফল দেখাবে।
AVG() ব্যবহার করা:
SELECT AVG(salary) FROM employees;
এটি employees
টেবিলের কর্মচারীদের গড় salary দেখাবে।
GROUP BY ব্যবহার করে নির্দিষ্ট কলামগুলোর ভিত্তিতে গ্রুপ তৈরি করা হয় এবং তারপর aggregate functions প্রয়োগ করা হয়।
SELECT department, AVG(salary) FROM employees GROUP BY department;
এটি employees
টেবিলের প্রতি department
-এর গড় salary দেখাবে।
HAVING ক্লজটি গ্রুপের উপর শর্তাবলী প্রয়োগ করতে ব্যবহার করা হয়, যা GROUP BY
এর পরে প্রযোজ্য।
SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;
এটি শুধুমাত্র তাদের department
দেখাবে, যাদের গড় salary 50,000-এর বেশি।
Presto-তে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করার জন্য JOIN ব্যবহার করা হয়। Presto সাপোর্ট করে বিভিন্ন ধরনের JOIN, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN।
INNER JOIN উদাহরণ:
SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;
এটি employees
এবং departments
টেবিলের মধ্যে সম্পর্ক তৈরি করবে যেখানে employees.department_id
এবং departments.department_id
সমান হবে।
এই ছিল Presto-তে বেসিক SQL Query চালানোর কিছু সাধারণ উদাহরণ। আপনি এই কোয়েরিগুলো ব্যবহার করে ডেটাবেস থেকে তথ্য সংগ্রহ, বিশ্লেষণ এবং ফলাফল সজ্জিত করতে পারবেন।
Presto হল একটি SQL ভিত্তিক ডিস্ট্রিবিউটেড কোয়েরি ইঞ্জিন, এবং এটি বড় ডেটাসেটের জন্য বিভিন্ন ধরনের SQL অপারেশন করতে সক্ষম। এই টিউটোরিয়ালে আমরা দেখবো কীভাবে Presto তে Joins, Filters, এবং Aggregation ব্যবহার করা যায়।
Presto তে Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্র করা যায়। Presto সমস্ত স্ট্যান্ডার্ড SQL Join অপারেশন সাপোর্ট করে, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN। নিচে কিছু উদাহরণ দেওয়া হলো:
INNER JOIN টেবিলগুলোর মিলিত রেকর্ডগুলো দেখায় যেখানে দুটি টেবিলের মধ্যে সম্পর্ক রয়েছে।
উদাহরণ:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;
এই কোয়েরিটি orders
এবং customers
টেবিলের মধ্যে customer_id
এর মাধ্যমে মিলে যাওয়া রেকর্ডগুলো নির্বাচন করবে।
LEFT JOIN বা LEFT OUTER JOIN টেবিলের বাম পাশে থাকা টেবিলের সব রেকর্ড সহ, ডান পাশের টেবিলের মিলিত রেকর্ডগুলো দেখায়।
উদাহরণ:
SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;
এই কোয়েরিটি customers
টেবিলের সব রেকর্ড এবং মেলে এমন orders
রেকর্ডগুলো দেখাবে। যদি কোন customer_id
এর সাথে মিল না থাকে, তবে order_id
এর মান NULL
হবে।
RIGHT JOIN হল LEFT JOIN এর বিপরীত, যেখানে ডান পাশে থাকা টেবিলের সব রেকর্ড দেখানো হয়।
উদাহরণ:
SELECT orders.order_id, customers.customer_name
FROM orders
RIGHT JOIN customers
ON orders.customer_id = customers.customer_id;
এটি orders
টেবিলের সব রেকর্ড এবং মেলে এমন customers
রেকর্ডগুলো দেখাবে।
FULL OUTER JOIN টেবিলের উভয় পাশের সমস্ত রেকর্ড দেখায়, এবং যেখানেই মেলানো যাবে না, সেখানেই NULL
দেখাবে।
উদাহরণ:
SELECT orders.order_id, customers.customer_name
FROM orders
FULL OUTER JOIN customers
ON orders.customer_id = customers.customer_id;
এটি orders
এবং customers
টেবিলের সমস্ত রেকর্ড দেখাবে, যেখানে মেলানো যায় না, সেখানে NULL
দেখানো হবে।
Presto তে Filters ব্যবহার করে আপনি নির্দিষ্ট শর্ত অনুসারে ডেটা ফিল্টার করতে পারেন। SQL তে WHERE ক্লজ ব্যবহার করে ফিল্টারিং করা হয়।
SELECT order_id, customer_name, order_date
FROM orders
WHERE order_date > '2023-01-01'
AND total_amount > 100;
এই কোয়েরিটি orders
টেবিল থেকে এমন সমস্ত অর্ডার বের করবে যার order_date
২০২৩ সালের ১ জানুয়ারি বা তার পরের এবং total_amount
১০০ এর বেশি।
LIKE ফিল্টার ব্যবহার করে প্যাটার্ন মিলিয়ে ডেটা ফিল্টার করা যায়।
উদাহরণ:
SELECT customer_name, email
FROM customers
WHERE email LIKE '%@gmail.com';
এটি সমস্ত customers
টেবিলের রেকর্ড ফিরিয়ে দেবে, যাদের ইমেইল ঠিকানায় @gmail.com
থাকবে।
IN ফিল্টার ব্যবহার করে একাধিক মানের মধ্যে ডেটা খোঁজা যায়।
উদাহরণ:
SELECT order_id, order_date
FROM orders
WHERE order_id IN (1, 2, 3, 5);
এটি orders
টেবিল থেকে সেই রেকর্ডগুলো ফিরিয়ে দেবে যেগুলোর order_id
১, ২, ৩, অথবা ৫।
Presto তে Aggregation ব্যবহার করে ডেটার উপর বিভিন্ন গণনা করা যায়, যেমন মোট, গড়, মিনিমাম, ম্যাক্সিমাম ইত্যাদি। GROUP BY এবং HAVING ক্লজগুলি Aggregation অপারেশনের সাথে ব্যবহৃত হয়।
SUM() ফাংশন মোট মান বের করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id;
এই কোয়েরিটি orders
টেবিল থেকে প্রতিটি customer_id
এর জন্য মোট খরচ (sum) বের করবে।
AVG() ফাংশন গড় বের করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT AVG(total_amount) AS average_order_value
FROM orders;
এই কোয়েরিটি সমস্ত অর্ডারের গড় মান বের করবে।
COUNT() ফাংশন রেকর্ডের সংখ্যা গননা করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id;
এই কোয়েরিটি প্রতিটি customer_id
এর জন্য মোট অর্ডারের সংখ্যা বের করবে।
MAX() এবং MIN() ফাংশন যথাক্রমে সর্বোচ্চ এবং সর্বনিম্ন মান বের করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT MAX(total_amount) AS max_order_value, MIN(total_amount) AS min_order_value
FROM orders;
এই কোয়েরিটি সমস্ত অর্ডারের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন অর্ডারের মূল্য বের করবে।
GROUP BY ডেটাকে একটি নির্দিষ্ট কলামের উপর ভিত্তি করে গ্রুপ করে এবং HAVING শর্ত নির্ধারণের জন্য ব্যবহৃত হয় (যা WHERE এর মতো, তবে এটি গ্রুপড ডেটার জন্য ব্যবহার হয়)।
উদাহরণ:
SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 500;
এই কোয়েরিটি সেই customer_id
গুলির জন্য মোট খরচ বের করবে যাদের খরচ ৫০০ এর বেশি।
Presto তে এই অপারেশনগুলি ব্যবহার করে আপনি বড় ডেটাসেটের উপর দ্রুত এবং কার্যকরীভাবে বিভিন্ন ধরনের বিশ্লেষণ করতে পারেন।
Presto ব্যবহার করে Complex Queries এবং Subqueries পরিচালনা করা একটি শক্তিশালী বৈশিষ্ট্য, যা বড় এবং জটিল ডেটা বিশ্লেষণের জন্য উপযুক্ত। এখানে আমরা দেখব কিভাবে Presto-তে জটিল কোয়েরি তৈরি এবং ব্যবহার করা যায়, এবং Subqueries কিভাবে কার্যকরভাবে ব্যবহার করা যায়।
Complex Query সাধারণত একাধিক টেবিল বা ডেটাসোর্সের উপর কাজ করে এবং বিভিন্ন SQL অপারেশন যেমন Joins, Aggregations, Filters, এবং Grouping সমন্বিত করে।
Presto সমর্থন করে বিভিন্ন ধরনের Joins, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN।
উদাহরণ:
SELECT orders.order_id, customers.customer_name, SUM(orders.amount) AS total_amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
GROUP BY orders.order_id, customers.customer_name
ORDER BY total_amount DESC;
এই কোয়েরিটি দুটি টেবিল orders
এবং customers
কে INNER JOIN করে এবং প্রতিটি অর্ডারের মোট পরিমাণ হিসাব করে, গ্রাহকের নামের সাথে।
Presto-তে Aggregation Functions যেমন SUM()
, AVG()
, COUNT()
, এবং MAX()
ব্যবহার করা হয় জটিল কোয়েরি তৈরি করতে।
উদাহরণ:
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
ORDER BY average_salary DESC;
এখানে employees
টেবিল থেকে প্রতি বিভাগে গড় বেতন বের করা হয়েছে।
WHERE এবং HAVING ক্লজ ব্যবহার করে Filters যোগ করা হয়। WHERE কোয়েরির শুরুর দিকে ডেটা ফিল্টার করে, এবং HAVING গ্রুপিংয়ের পরে ডেটা ফিল্টার করে।
উদাহরণ:
SELECT department, COUNT(*) AS num_employees
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY num_employees DESC;
এই কোয়েরিটি দেখায় যে কোন কোন বিভাগের ৫০,০০০ টাকার বেশি বেতন পাওয়া কর্মচারী আছে এবং সেই বিভাগে কমপক্ষে ৫ জন কর্মচারী রয়েছে।
Subqueries হল একটি কোয়েরি যা আরেকটি কোয়েরির মধ্যে ব্যবহৃত হয়। Subquery সাধারণত WHERE, FROM, অথবা SELECT ক্লজের মধ্যে অন্তর্ভুক্ত করা হয়।
এটি সাধারণত একটি ভ্যালু বা আউটপুট পাওয়ার জন্য ব্যবহৃত হয়, যা মূল কোয়েরির WHERE ক্লজে ফিল্টার করার জন্য ব্যবহৃত হয়।
উদাহরণ:
SELECT employee_name, salary
FROM employees
WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
এখানে, Subquery প্রথমে Sales
বিভাগের department_id বের করে, এবং মূল কোয়েরি তার মাধ্যমে employees টেবিল থেকে সেই বিভাগের কর্মচারীদের বের করে।
কখনো কখনো সাবকোয়েরি মূল কোয়েরির একটি অংশ হিসেবে ব্যবহার করা হয়, যেমন একটি কাস্টম কলাম তৈরি করা।
উদাহরণ:
SELECT employee_name,
(SELECT department_name FROM departments WHERE departments.department_id = employees.department_id) AS department
FROM employees;
এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর জন্য তাদের department_name সংগ্রহ করে এবং তা একটি নতুন কলামে department
নামে যোগ করে।
Correlated Subquery এমন একটি সাবকোয়েরি যা মূল কোয়েরির প্রতিটি সারির জন্য একটি আলাদা সাবকোয়েরি চালায়। এটি মূল কোয়েরির প্রতিটি রেকর্ডের উপর নির্ভরশীল।
উদাহরণ:
SELECT employee_name, salary
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
এখানে, সাবকোয়েরি প্রতিটি কর্মচারীর department_id এর জন্য গড় বেতন বের করে এবং তারপর প্রধান কোয়েরি সেই কর্মচারীদের নির্বাচন করে, যাদের বেতন গড় বেতনের চেয়ে বেশি।
EXPLAIN
for Query Plan:উপসংহার
Presto তে Complex Queries এবং Subqueries ব্যবহারের মাধ্যমে আপনি জটিল ডেটা বিশ্লেষণ কার্যকরভাবে করতে পারেন। সঠিকভাবে সাবকোয়েরি এবং জটিল কোয়েরি ব্যবহার করলে বড় ডেটাসেটের উপর কার্যকরী এবং দ্রুত বিশ্লেষণ করা সম্ভব।
Read more